#include "ModeloEstructurado.cpp"
#include "includes.h"
#include <assert.h>

void test_1_comprimirConModEst_sinArchivo() {
	
	// Comprimimos "0123". La salida de esto deberia ser:
	// 0 -> 0
	// 1 -> 1, 1
	// 2 -> 1, 0, 2
	// 3 -> 1, 0, 3
	// N0 -> 0,1,1,1
	// N1 -> 1,0,0
	// N2 -> 2,3
	
	ModeloEstructuradoCompress modest;
	modest.debug = true;
	
	string input;
	input.push_back(0);
	input.push_back(1);
	input.push_back(2);
	input.push_back(3);
	vector<string>* output = new vector<string>;
	
	modest.runBlock(input, output);
	
	assert ( output->size() == 3); // OK
	assert ((output->at(0)).length() == 3);
	assert ((output->at(1)).length() == 3);
	assert ((output->at(2)).length() == 2);
	
	delete (output);
	
}

void test_2_comprimirConModEst_conArchivo() {
	
	// Probamos con un tamanio de bloque > tamanio de archivo
	
	uInt blocksize = 900*1024;
	ModeloEstructuradoCompress modest("input.txt", blocksize);
	modest.debug = false;
	
	modest.run();
	
}

void test_3_comprimirConModEst_conArchivo() {
	
	// Probamos con un tamanio de bloque < tamanio de archivo
	
	uInt blocksize = 4;
	ModeloEstructuradoCompress modest("input.txt", blocksize);
	modest.debug = false;
	
	modest.run();
	
}

int main() {
	
	//test_1_comprimirConModEst_sinArchivo();
	//test_2_comprimirConModEst_conArchivo();
	test_3_comprimirConModEst_conArchivo();
	
	return 0;
	
}
